前言
因为前段时间实验室老师要求我完成一个项目,是有关学校教务系统的,要求完成一个微信小程序。
目前处于实验阶段,老师也没有给我需求文档,所以目前的情况就是做些东西练练手。这里记录一下,之后正式工作了能快速完成基本的构建。
以下内容转载自 Flask官方文档
Flask Installation
Create an environment
Create a project folder and a venv folder within:
$ mkdir myproject
$ cd myproject
$ python3 -m venv venv
Activate the environment
Before you work on your project, activate the corresponding environment:
$ . venv/bin/activate
Install Flask
Within the activated environment, use the following command to install Flask:
$ pip install Flask
Quickstart
A minimal Flask application looks something like this:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "<p>Hello, World!</p>"
So what did that code do?
-
First we imported the
Flask
class. An instance of this class will be our WSGI application. -
Next we create an instance of this class. The first argument is the name of the application’s module or package.
__name__
is a convenient shortcut for this that is appropriate for most cases. This is needed so that Flask knows where to look for resources such as templates and static files. -
We then use the route() decorator to tell Flask what URL should trigger our function.
-
The function returns the message we want to display in the user’s browser. The default content type is HTML, so HTML in the string will be rendered by the browser.
Save it as hello.py
or something similar. Make sure to not call your application flask.py
because this would conflict with Flask itself.
To run the application, use the flask
command or python -m flask
. You need to tell the Flask where your application is with the --app
option.
$ flask --app hello run
* Serving Flask app 'hello'
* Running on http://127.0.0.1:5000 (Press CTRL+C to quit)
Externally Visible Server
If you run the server you will notice that the server is only accessible from your own computer, not from any other in the network. This is the default because in debugging mode a user of the application can execute arbitrary Python code on your computer.
If you have the debugger disabled or trust the users on your network, you can make the server publicly available simply by adding --host=0.0.0.0
to the command line:
$ flask run --host=0.0.0.0
This tells your operating system to listen on all public IPs.
Debug
To enable debug mode, use the --debug option.
$ flask --app hello run --debug
* Serving Flask app 'hello'
* Debug mode: on
* Running on http://127.0.0.1:5000 (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: nnn-nnn-nnn
Routing
Modern web applications use meaningful URLs to help users. Users are more likely to like a page and come back if the page uses a meaningful URL they can remember and use to directly visit a page.
Use the route()
decorator to bind a function to a URL.
@app.route('/')
def index():
return 'Index Page'
@app.route('/hello')
def hello():
return 'Hello, World'
HTTP Methods
Web applications use different HTTP methods when accessing URLs. You should familiarize yourself with the HTTP methods as you work with Flask. By default, a route only answers to GET
requests. You can use the methods
argument of the route() decorator to handle different HTTP methods.
from flask import request
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
return do_the_login()
else:
return show_the_login_form()
The Request Object
The request object is documented in the API section and we will not cover it here in detail (see Request). Here is a broad overview of some of the most common operations. First of all you have to import it from the flask
module:
from flask import request
The current request method is available by using the method attribute. To access form data (data transmitted in a POST
or PUT
request) you can use the form attribute. Here is a full example of the two attributes mentioned above:
@app.route('/login', methods=['POST', 'GET'])
def login():
error = None
if request.method == 'POST':
if valid_login(request.form['username'],
request.form['password']):
return log_the_user_in(request.form['username'])
else:
error = 'Invalid username/password'
# the code below is executed if the request method
# was GET or the credentials were invalid
return render_template('login.html', error=error)